import React from 'react'
/*
    类的外部直接能够访问类中的属性，导致出现逻辑错误，解决问题如题办法如下
    1、将类中的属性进行私有化，使用#来修饰类中的成员，这样就私有化了
    2、为私有属性提供set和get访问器
       set是用来赋值的,get用来取值的
    3、在set方法中逻辑判断
*/
export default function App() {
  const p=new Person()
  //类中的set方法在外部调用的时候，你可以将其看作一个属性
  p.name="张三丰"
  try {
    //在调用处，使用try...catch来进行异常的处理
    p.age=-45
  } catch (error) {
    p.age=0
  }
  return (
    <div>
        <h1>个人简介</h1>
        <div>{p.introduce()}</div>
    </div>
  )
}
class Person{
    #name
    #age
    set name(arg){
       this.#name=arg 
    }
    get name(){
        return this.#name;
    }
    set age(arg){
        if(arg>=0&&arg<=120){
            this.#age=arg
        }else{
            throw new Error("年龄不符合要求") //使用throw抛出的是自定义的异常,抛给调用处
        }
        
    }
    get age(){
        return this.#age;
    }
    introduce(){
       return `我叫${this.#name},今年${this.#age}岁` 
    }
}
/**
 * 自定义一个类，叫人类
 * Chinese
 * name属性
 * age属性
 * sex属性
 * name必须是由汉字组成的是少是两个汉字，最多是4个汉字
 * age必须在0岁到120岁之间
 * sex只能是男或者女
 */
